<?php
/**
 * 功能说明：奖品池
 * 参数说明：
 * 返回值：
 * 备注说明：
 * 作者：Administrator
 * 最后一次修改时间:2017/5/14 17:12
 */

namespace logic\luckydraw;


class PrizePoll implements \IteratorAggregate , \Countable
{
	//奖品集
	protected $items = array();

	//加入奖品
	public function addItem( Prize $item )
	{
		$this -> items[ $item -> getId() ] = $item;
		return $this;
	}

	//删除奖品
	public function removeItem( $itemId )
	{
		if ( isset( $this -> items[ $itemId ] ) ) {
			unset( $this -> items[ $itemId ] );
		}
		return $this;
	}

	//更新奖品
	public function updateItem( Prize $item )
	{
		if ( isset( $this -> items[ $item -> getId() ] ) ) {
			$this -> items[ $item -> getId() ] = $item;
		}
		return $this;
	}

	//获取所有奖品
	public function getItems()
	{
		return $this -> items;
	}

	//所有所有可用奖品(如果权重为0，说明这个奖品永远不可能抽到)
	public function getVisibleItems()
	{
		$items = array();
		foreach ( $this -> items as $item ) {
			if ( $item -> getWeight() ) {
				$items[ $item -> getId() ] = $item;
			}
		}
		return $items;
	}

	//Countable::count
	public function count()
	{
		return count( $this -> items );
	}

	//IteratorAggregate::getIterator()
	public function getIterator()
	{
		return new ArrayIterator( $this -> items );
	}
}